package com.util;


import com.util.Consts;
import lombok.Getter;

/*
    枚举类特点：
        1、构造器私有
        2、当类定义完成之后，实例个数固定
        3、剩下操作和普通类一样
 */
/**
 *  redis key管理
 *  约定：一个枚举实例就是一个 key
 */
@Getter
public enum  RedisKeys{
    //接口防刷key
    BRUSH_PROOF("brush_proof", 10L),
    //用户攻略顶
    USER_STRATEGY_THUMB("user_strategy_thumb", -1L),
    //用户攻略收藏
    USER_STRATEGY_FAVOR("user_strategy_favor", -1L),
    //攻略统计对象：-1L 表示不需要指定过期时间
    STRATEGY_STATIS_VO("strategy_statis_vo", -1L),
    //短信验证码
    VERIFY_CODE("verify_code", Consts.VERIFY_CODE_VAI_TIME * 60L),
    //登录token
    LOGIN_TOKEN("user_login_token", Consts.USER_INFO_TOKEN_VAI_TIME * 60L);

    private String prefix;  //redis的key的前缀
    private Long time;  //redis的key的有效时间，-1L 表示不需要指定过期时间，单位 秒
    private RedisKeys(String prefix, Long time){
        this.prefix = prefix;
        this.time = time;
    }

    //拼接完整的redis的 key
    public String join(String ...keys){
        StringBuilder sb = new StringBuilder();
        sb.append(prefix);
        for (String key : keys) {
            sb.append(":").append(key);
        }
        return sb.toString();
    }
}
